from typing import Dict, Type
from src.core.parser.sql_parser_base import SQLParserBase
from src.core.parser.custom_sql_parser import CustomSQLParser
from src.core.parser.sql_parse_based_parser import SQLParseBasedParser


class SQLParserFactory:
    """SQL解析器工厂类"""

    # 注册支持的解析器类型
    _parsers: Dict[str, Type[SQLParserBase]] = {
        "custom": CustomSQLParser,
        "sqlparse": SQLParseBasedParser
    }

    @classmethod
    def create(cls, parser_type: str) -> SQLParserBase:
        """创建SQL解析器实例

        Args:
            parser_type: 解析器类型

        Returns:
            SQL解析器实例

        Raises:
            ValueError: 不支持的解析器类型
        """
        if parser_type not in cls._parsers:
            raise ValueError(f"不支持的解析器类型: {parser_type}")

        parser_class = cls._parsers[parser_type]
        return parser_class()